#ifndef __FLY_CONTROL_H
#define __FLY_CONTROL_H

#include "../hardware/Flight_control/pid.h"             // PID控制


extern uint8_t fly_control_init_status;
extern int fly_unlock_flag;      // 解锁标志
extern float User_Speed_Base;   // 用户速度基准值


// 高度融合相关接口
float fly_fusion_height(float laser_mm, float pressure_pa);

// AT指令相关状态定义
typedef enum {
    AT_STATE_NONE = 0,          //空
    AT_STATE_PWM,               // PWM设置
    AT_STATE_TAKEOFF,           // 起飞
    AT_STATE_STOP,              // 停止
    AT_STATE_UNLOCK,            // 解锁
    AT_STATE_GAS_PEDAL,         // 油门
    AT_STATE_CONTROL,           // 控制指令
    // 可扩展更多指令
} at_state_t;


extern uint8_t rx_1_data[30];
extern uint8_t rx_1_flag;
extern uint8_t rx_1_num;
extern uint8_t rx_1_buf[1];
extern uint8_t rx_4_data[50];
extern uint8_t rx_4_flag;
extern uint8_t rx_4_num;
extern uint8_t rx_4_buf[1];
extern uint8_t rx_5_data[30];
extern uint8_t rx_5_flag;
extern uint8_t rx_5_num;
extern uint8_t rx_5_buf[1];
extern uint8_t speed_updata_flag;


int fly_control_init(uint8_t enable_mask);// 飞控相关外设初始化函数,检测各外设初始化状态

// AT指令接口
void at_parse(const char* cmd);
at_state_t at_get_state(void);
int  at_get_flag(void);
int  at_get_pwm(int idx);
int  at_get_user_ad(int idx);
int  at_get_user_key(void);
void at_clear_flag(void);

// 控制
void Fly_unlock(void);
void Fly_Stop(void);

#endif
